//定义一个JS控制器 AMD require.js 模块化插件
//1、需要引入插件
//2、该控制器模块的业务逻辑
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

  //定义一个控制器
  var Controller = {
    index: function () {
      //给选项卡绑定点击事件 切换选项卡的时候才会触发
      $(`a[data-toggle="tab"]`).on('shown.bs.tab', function () {
        // 同时拿到table表格里面订单和评论的href属性
        var tab = $($(this).attr('href'))
        if (tab.length <= 0) return; //为空就停下

        //两个选项卡，分别给两个不同的请求方法
        //根据锚点切换，然后来触发选项卡的方法
        Controller.table[tab.attr('id')].call(this)
      })

      // 一进来就调用ordertable
      Controller.table['order']()
    },
    // 两个表格分开来定义函数
    table: {
      // 课程订单
      order: function () {
        // 接收进入到详情界面的id
        var ids = Fast.api.query('ids');

        // 初始化表格参数配置
        //配置整个表格中增删查改请求控制器地址，用的ajax的方式请求
        Table.api.init({
          extend: {
            order_url: `subject/info/order?ids=${ids}`, //课程订单
            table: 'subject_order',
          }
        });

        //获取view视图里面的dom元素table元素
        var OrderTable = $("#OrderTable")

        //渲染列表数据
        // $.ajax({
        OrderTable.bootstrapTable({
          url: $.fn.bootstrapTable.defaults.extend.order_url, //请求地址
          toolbar: "#OrderToolbar", //工具栏
          pk: 'id', //默认主键字段名
          sortName: 'createtime', //排序的字段名
          sortOrder: 'desc', //排序方式
          //渲染的数据部分
          columns: [ //渲染的字段部分
            /**
             *  sortable：是否开启排序
             *  operate：是否需要这个搜索栏
             */
            { checkbox: true },
            { field: 'id', title: 'ID', operate: false, sortable: true },
            { field: 'code', title: __('OrderCode'), operate: 'LIKE' },
            { field: 'total', title: __('OrderTotal'), operate: false, sortable: true },
            { field: 'business.nickname', title: __('BusinessNickname'), operate: 'LIKE' },
            {
              field: 'createtime',
              title: __('OrderTime'),
              operate: 'RANGE',
              addclass: 'datetimerange',
              sortable: true,
              formatter: Table.api.formatter.datetime
            },
          ]
        })

        // 为表格绑定事件
        Table.api.bindevent(OrderTable);
      },

      // 课程评论
      comment: function () {
        //接收进入到详情界面的id值
        var ids = Fast.api.query('ids');

        // 初始化表格参数配置
        //配置整个表格中增删查改请求控制器地址，用的ajax的方式请求
        Table.api.init({
          extend: {
            comment_url: `subject/info/comment?ids=${ids}`, //评论
            table: 'subject_comment',
          }
        });

        //获取view视图里面的dom元素table元素
        var CommentTable = $("#CommentTable")

        //渲染列表数据
        // $.ajax({
        CommentTable.bootstrapTable({
          url: $.fn.bootstrapTable.defaults.extend.comment_url, //请求地址
          toolbar: "#CommentToolbar", //工具栏
          pk: 'id', //默认主键字段名
          sortName: 'createtime', //排序的字段名
          sortOrder: 'desc', //排序的方式
          //渲染的数据部分
          columns: [ //渲染的字段部分
            { field: 'id', title: 'ID', operate: false, sortable: true },
            { field: 'business.nickname', title: __('BusinessNickname'), operate: 'LIKE' },
            { field: 'content', title: __('CommentContent'), operate: 'LIKE' },
            {
              field: 'createtime',
              title: __('CommentTime'),
              operate: 'RANGE',
              addclass: 'datetimerange',
              sortable: true,
              formatter: Table.api.formatter.datetime
            },
          ]
        })

        // 为表格绑定事件
        Table.api.bindevent(CommentTable);
      },

      // 课程章节
      chapter: function () {
        //接收进入到详情界面的id值
        var ids = Fast.api.query('ids');

        // 初始化表格参数配置
        //配置整个表格中增删查改请求控制器地址，用的ajax的方式请求
        Table.api.init({
          extend: {
            chapter_url: `subject/chapter/index?ids=${ids}`, //章节
            add_url: `subject/chapter/add?ids=${ids}`, //添加的控制器地址
            edit_url: 'subject/chapter/edit', //编辑的控制器地址
            del_url: 'subject/chapter/del', //删除的控制器地址
            table: 'subject_chapter',
          }
        });

        //获取view视图里面的dom元素table元素
        var ChapterTable = $("#ChapterTable");

        //渲染列表数据
        // $.ajax({
        ChapterTable.bootstrapTable({
          url: $.fn.bootstrapTable.defaults.extend.chapter_url, //请求地址
          toolbar: "#ChapterToolbar", //工具栏
          pk: 'id', //默认主键字段名
          sortName: 'createtime', //排序的字段名
          sortOrder: 'desc', //排序的方式
          //渲染的数据部分
          columns: [
            { checkbox: true },
            { field: 'id', title: 'ID', operate: false, sortable: true },
            { field: 'title', title: __('ChapterTitle'), operate: 'LIKE' },
            {
              field: 'createtime',
              title: __('ChapterTime'),
              operate: 'RANGE',
              addclass: 'datetimerange',
              sortable: true,
              formatter: Table.api.formatter.datetime
            },
            //最后一排的操作按钮组
            {
              field: "operate",
              title: __('Operate'),
              table: ChapterTable,
              events: Table.api.events.operate,
              formatter: Table.api.formatter.operate,
            }
          ]
        })

        // 为表格绑定事件
        Table.api.bindevent(ChapterTable);
      }
    },

    api: {
      //JS模块化的全局方法
      bindevent: function () {
        Form.api.bindevent($("form[role=form]"));
      }
    }
  }

  //模块返回值
  return Controller
})